# -*-coding:utf-8-*-
__author__ = 'nickleo'
import config
brokerCfgs = []
brokerCfgs.append({'key':"longPollingEnable",'value':"true",'desc':"Consumer订阅消息时，Broker是否开启长轮询"})
brokerCfgs.append({'key':"namesrvAddr",'value': config.HogWartsConfig().get_nameservers(),'desc':"NameServer地址"})
brokerCfgs.append({'key':"fetchNamesrvAddrByAddressServer",'value':"false",'desc':"是否从地址服务器寻找Name Server地址，正式发布后，默认值为false"})
brokerCfgs.append({'key':"autoCreateSubscriptionGroup",'value':"false",'desc':"自动创建订阅组功能是否开启（线上建议关闭）"})
brokerCfgs.append({'key':"autoCreateTopicEnable",'value':"false",'desc':"自动创建Topic功能是否开启（线上建议关闭）"})
brokerCfgs.append({'key':"sendThreadPoolQueueCapacity",'value':"100000",'desc':"发送消息对应的线程池阻塞队列size"})
brokerCfgs.append({'key':"clusterTopicEnable",'value':"true",'desc':"自动创建以集群名字命名的Topic功能是否开启"})
brokerCfgs.append({'key':"filterServerNums",'value':"0",'desc':"过滤服务器数量"})
brokerCfgs.append({'key':"pullMessageThreadPoolNums",'value':"48",'desc':"拉取消息线程数量"})
brokerCfgs.append({'key':"brokerName",'value':"fetionmq",'desc':"Broker名称"})
brokerCfgs.append({'key':"rocketmqHome",'value':"/usr/rocketmq",'desc':"RocketMQ的HOMEDIR"})
brokerCfgs.append({'key':"sendMessageThreadPoolNums",'value':"80",'desc':"发送消息的线程数量"})
brokerCfgs.append({'key':"brokerId",'value':"0",'desc':"BrokerID，0为Master，>0为Slave"})
brokerCfgs.append({'key':"brokerTopicEnable",'value':"true",'desc':"自动创建以服务器名字命名的Topic功能是否开启"})
brokerCfgs.append({'key':"brokerPermission",'value':"6",'desc':"读写权限PERM_READ = 0x1 << 2    PERM_WRITE = 0x1 << 1"})
brokerCfgs.append({'key':"shortPollingTimeMills",'value':"1000",'desc':"如果是短轮询，服务器挂起时间"})
brokerCfgs.append({'key':"clientManageThreadPoolNums",'value':"16",'desc':"客户端管理线程数量"})
brokerCfgs.append({'key':"adminBrokerThreadPoolNums",'value':"16",'desc':"管理Broker线程数量"})
brokerCfgs.append({'key':"flushConsumerOffsetInterval",'value':"5000",'desc':"刷新消费者Offset的时间间隔"})
brokerCfgs.append({'key':"flushConsumerOffsetHistoryInterval",'value':"60000",'desc':"刷新消费者Offset历史的时间间隔"})
brokerCfgs.append({'key':"defaultTopicQueueNums",'value':"8",'desc':"默认Topic队列数量"})
brokerCfgs.append({'key':"rejectTransactionMessage",'value':"false",'desc':"是否拒绝接收事务消息"})
brokerCfgs.append({'key':"brokerIP2",'value':"192.168.251.241",'desc':"brokerIP2 用作HA体系的地址"})
brokerCfgs.append({'key':"brokerIP1",'value':"192.168.251.241",'desc':"brokerIP1 真实提供Broker能力的地址"})
brokerCfgs.append({'key':"clientManageThreadPoolNums",'value':"true",'desc':"notify consumerId changed 开关"})
brokerCfgs.append({'key':"pullThreadPoolQueueCapacity",'value':"100000",'desc':"拉取消息队列任务数"})
brokerCfgs.append({'key':"brokerClusterName",'value':"FetionMQCluster",'desc':"Broker的所在集群名称"})
brokerCfgs.append({'key':"storePathCommitLog",'value':"16",'desc':"存储数据的目录"})


brokerCfgText = """
##Consumer订阅消息时，Broker是否开启长轮询
longPollingEnable=true
##NameServer地址
namesrvAddr=192.168.251.241:9876
##是否从地址服务器寻找Name Server地址，正式发布后，默认值为false
fetchNamesrvAddrByAddressServer=false
##自动创建订阅组功能是否开启（线上建议关闭）
autoCreateSubscriptionGroup=false
##自动创建Topic功能是否开启（线上建议关闭）
autoCreateTopicEnable=false
##发送消息对应的线程池阻塞队列size
sendThreadPoolQueueCapacity=100000
##自动创建以集群名字命名的Topic功能是否开启
clusterTopicEnable=true
##过滤服务器数量
filterServerNums=0
##拉取消息线程数量
pullMessageThreadPoolNums=48
##Broker名称
brokerName=fetionmq
##RocketMQ的HOMEDIR
rocketmqHome=/usr/rocketmq
##发送消息的线程数量
sendMessageThreadPoolNums=80
##BrokerID，0为Master，>0为Slave
brokerId=0
##自动创建以服务器名字命名的Topic功能是否开启
brokerTopicEnable=true
##读写权限PERM_READ = 0x1 << 2    PERM_WRITE = 0x1 << 1
brokerPermission=6
##如果是短轮询，服务器挂起时间
shortPollingTimeMills=1000
##客户端管理线程数量
clientManageThreadPoolNums=16
##管理Broker线程数量
adminBrokerThreadPoolNums=16
##刷新消费者Offset的时间间隔
flushConsumerOffsetInterval=5000
##刷新消费者Offset历史的时间间隔
flushConsumerOffsetHistoryInterval=60000
##默认Topic队列数量
defaultTopicQueueNums=8
##是否拒绝接收事务消息
rejectTransactionMessage=false
##brokerIP2用作HA体系的地址
brokerIP2=192.168.251.241
##brokerIP1真实提供Broker能力的地址
brokerIP1=192.168.251.241
##notify consumerId changed 开关
notifyConsumerIdsChangedEnable=true
##拉取消息队列任务数
pullThreadPoolQueueCapacity=100000
##Broker的所在集群名称
brokerClusterName=FetionMQCluster
##存储数据的目录
storePathCommitLog=/data/store/commitlog
##写消息索引到ConsumeQueue，缓冲区高水位，超过则开始流控
putMsgIndexHightWater=600000
##最大被拉取的消息字节数，消息在磁盘
maxTransferBytesOnMessageInDisk=65536
##磁盘空间最大使用率
diskMaxUsedSpaceRatio=75
##重启时，是否校验CRC
checkCRCOnRecover=true
##Slave落后Master超过此值，则认为存在异常
haSlaveFallbehindMax=268435456
##删除多个ConsumeQueue文件的间隔时间（单位毫秒）
deleteConsumeQueueFilesInterval=100
##清理资源间隔时间（单位毫秒）
cleanResourceInterval=10000
##批量最大消息数量
maxMsgsNumBatch=64
##刷ConsumeQueue，至少刷几个PAGE
flushConsumeQueueLeastPages=2
##同步刷盘超时时间
syncFlushTimeout=5000
##何时触发删除文件, 默认凌晨4点删除文件
deleteWhen=04
##Broker角色
brokerRole=ASYNC_MASTER
##强制删除文件间隔时间（单位毫秒）
destroyMapedFileIntervalForcibly=120000
##CommitLog每个文件大小 1G
mapedFileSizeCommitLog=1073741824
##HA心跳时间间隔
haSendHeartbeatInterval=5000
##刷盘方式
flushDiskType=ASYNC_FLUSH
##磁盘空间超过90%警戒水位，自动开始删除文件
cleanFileForciblyEnable=true
haHousekeepingInterval=20000
##定期检查Hanged文件间隔时间（单位毫秒）
redeleteHangedFileInterval=120000
##最大消息大小，默认512K
maxMessageSize=524288
##是否定时方式刷盘，默认是实时刷盘
flushCommitLogTimed=false
##最大被拉取的消息个数，消息在磁盘
maxTransferCountOnMessageInDisk=8
##CommitLog刷盘间隔时间（单位毫秒）
flushIntervalCommitLog=1000
##文件保留时间（单位小时）
fileReservedTime=168
##刷CommitLog，彻底刷盘间隔时间
flushCommitLogThoroughInterval=10000
##最大Hash槽位数
maxHashSlotNum=5000000
##最大索引数
maxIndexNum=20000000
##是否开启消息索引功能
messageIndexEnable=true
##数据存储路径地址
storePathRootDir=/data/store
##HA功能，监听端口
haListenPort=10912
##刷新延迟Offset时间间隔
flushDelayOffsetInterval=10000
##最大传输大小
haTransferBatchSize=32768
##删除多个CommitLog文件的间隔时间（单位毫秒）
deleteCommitLogFilesInterval=100
##最大被拉取的消息字节数，消息在内存
maxTransferBytesOnMessageInMemory=262144
##命中消息在内存的最大比例
accessMessageInMemoryMaxRatio=40
##刷ConsumeQueue，彻底刷盘间隔时间
flushConsumeQueueThoroughInterval=60000
##ConsumeQueue刷盘间隔时间（单位毫秒）
flushIntervalConsumeQueue=1000
##最大被拉取的消息个数，消息在内存
maxTransferCountOnMessageInMemory=32
##索引是否安全
messageIndexSafe=false
##ConsumeQueue每个文件大小 默认存储60W条消息
mapedFileSizeConsumeQueue=6000000
##消息延迟等级
messageDelayLevel=1s 5s 10s 1m 5m 10m 20m 30m 1h 2h 6h 12h 24h
##刷CommitLog，至少刷几个PAGE
flushCommitLogLeastPages=4
"""

##----------Netty服务端配置------------##
mqNettyCfgText="""
serverChannelMaxIdleTimeSeconds=120
##服务监听端口
listenPort=10911
serverCallbackExecutorThreads=0
serverAsyncSemaphoreValue=64
serverSocketSndBufSize=131072
serverSelectorThreads=3
serverPooledByteBufAllocatorEnable=false
serverWorkerThreads=8
serverSocketRcvBufSize=131072
serverOnewaySemaphoreValue=256
clientWorkerThreads=4
connectTimeoutMillis=3000
clientSocketRcvBufSize=131072
clientOnewaySemaphoreValue=2048
clientChannelMaxIdleTimeSeconds=120
clientPooledByteBufAllocatorEnable=false
clientAsyncSemaphoreValue=2048
channelNotActiveInterval=60000
clientCallbackExecutorThreads=16
clientSocketSndBufSize=131072
"""